summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNarr the Reg <juangerman-13@hotmail.com>2023-01-07 17:41:37 +0100
committerGitHub <noreply@github.com>2023-01-07 17:41:37 +0100
commit432d48d9c8fb179374b7b591743851b9331f9c96 (patch)
treece7d6dd08a2883a9950c9f625ab2ac8cee289052
parentMerge pull request #9573 from liamwhite/optional (diff)
parentrenderer_vulkan: disable clock boost on unvalidated devices (diff)
downloadyuzu-432d48d9c8fb179374b7b591743851b9331f9c96.tar
yuzu-432d48d9c8fb179374b7b591743851b9331f9c96.tar.gz
yuzu-432d48d9c8fb179374b7b591743851b9331f9c96.tar.bz2
yuzu-432d48d9c8fb179374b7b591743851b9331f9c96.tar.lz
yuzu-432d48d9c8fb179374b7b591743851b9331f9c96.tar.xz
yuzu-432d48d9c8fb179374b7b591743851b9331f9c96.tar.zst
yuzu-432d48d9c8fb179374b7b591743851b9331f9c96.zip
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp12
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h2
3 files changed, 15 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
index 1578cb206..52855120c 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
@@ -110,7 +110,7 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_,
screen_info),
rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator,
state_tracker, scheduler) {
- if (Settings::values.renderer_force_max_clock.GetValue()) {
+ if (Settings::values.renderer_force_max_clock.GetValue() && device.ShouldBoostClocks()) {
turbo_mode.emplace(instance, dld);
}
Report();
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 07c984c5e..fd1c5a683 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -991,6 +991,18 @@ std::string Device::GetDriverName() const {
}
}
+bool Device::ShouldBoostClocks() const {
+ const bool validated_driver =
+ driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE ||
+ driver_id == VK_DRIVER_ID_MESA_RADV || driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY ||
+ driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS ||
+ driver_id == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA;
+
+ const bool is_steam_deck = properties.vendorID == 0x1002 && properties.deviceID == 0x163F;
+
+ return validated_driver && !is_steam_deck;
+}
+
static std::vector<const char*> ExtensionsRequiredForInstanceVersion(u32 available_version) {
std::vector<const char*> extensions{REQUIRED_EXTENSIONS.begin(), REQUIRED_EXTENSIONS.end()};
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h
index 6042046e1..4bc267163 100644
--- a/src/video_core/vulkan_common/vulkan_device.h
+++ b/src/video_core/vulkan_common/vulkan_device.h
@@ -106,6 +106,8 @@ public:
return driver_id;
}
+ bool ShouldBoostClocks() const;
+
/// Returns uniform buffer alignment requeriment.
VkDeviceSize GetUniformBufferAlignment() const {
return properties.limits.minUniformBufferOffsetAlignment;